﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OneDimensionArray
{
    class Program
    {
        static void Main(string[] args)
        {
            int choice;
            do
            {
                Console.WriteLine("Введите номер программы 1-5");
                choice = Int32.Parse(Console.ReadLine());
                switch (choice)
                {
                    case 1:
                        MaxNumberInArray();
                        break;
                    case 2:
                        ElementiDeltaFive();
                        break;
                    case 3:
                        SumBeforeMax();
                        break;
                    case 4:
                        NegativeElement();
                        break;
                        case 5:
                        ChangeArrayAfterMax();
                        break;
                }
            }
            while (choice <= 0 | choice > 4);
        }

        static void MaxNumberInArray()
        {
            int[] intArray = new int[5];
            int theTop = Int32.MinValue;

            for (int i = 0; i < 5; i++)
            {

                Console.Write("[{0}]: ", i);
                intArray[i] = Int32.Parse(Console.ReadLine());
            }
            Console.WriteLine("Элементы массива intArray: ");

            for (int i = 0; i < intArray.Length; i++)
            {
                Console.WriteLine(intArray[i]);
                if (intArray[i] > theTop)
                {
                    theTop = intArray[i];
                }

            }

            Console.WriteLine("Максимальное значение {0} ", theTop);
        }

        static void ElementiDeltaFive()
        {

            Console.WriteLine("Введите размер массива");
            int razmer = Int32.Parse(Console.ReadLine());
            int[] intArray = new int[razmer];
            int theBottom = Int32.MaxValue;
            int countDeltaFive = 0;


            for (int i = 0; i < intArray.Length; i++)
            {

                Console.Write("[{0}]: ", i);
                intArray[i] = Int32.Parse(Console.ReadLine());
                if (intArray[i] < theBottom)
                {
                    theBottom = intArray[i];

                }
                if (intArray[i] == (theBottom + 5))
                {
                    countDeltaFive++;
                }

            }

            Console.WriteLine("Количество значений больше минимального на 5 составляет   " + countDeltaFive);
        }

        static void SumBeforeMax()
        {
            Console.WriteLine("Введите размер массива");
            int razmer = Int32.Parse(Console.ReadLine());
            int[] intArray = new int[razmer];
            int max = Int32.MinValue;
            int maxCount = 0;
            int sumBeforeMax = 0;


            for (int i = 0; i < intArray.Length; i++)
            {

                Console.Write("[{0}]: ", i);
                intArray[i] = Int32.Parse(Console.ReadLine());
                if (intArray[i] > max)
                {
                    max = intArray[i];
                }

            }


            if (intArray[0] != max)
            {

                for (int i = 0; i < Array.IndexOf(intArray, max); i++)
                    sumBeforeMax += intArray[i];
            }

    
            Console.WriteLine("максимальное значение составляет  " + max);
            Console.WriteLine("сумма значений до максимального составляет  " + sumBeforeMax);
           

        }
        static void NegativeElement()
        {
            {
                int[] intArray = new int[8];
                int negCount = 0;

                for (int i = 0; i < 8; i++)
                {

                    Console.Write("[{0}]: ", i);
                    intArray[i] = Int32.Parse(Console.ReadLine());
                    if (intArray[i] < 0)
                        negCount++;
                }


                for (int i = intArray.Length - 1; i >= 0; i--)
                {

                    if (intArray[i] < 0)
                    {
                        if (negCount == 1)
                        {
                            Console.WriteLine("Позиция единственного отрицательного элемента {0} ", i);
                            Console.WriteLine("Значение единственного отрицательного элемента {0} ", intArray[i]);
                            break;
                        }
                        else if (negCount > 1)
                        {
                            Console.WriteLine("Позиция последнего отрицательного элемента из {0} составляет {1}", negCount, i);
                            Console.WriteLine("Значение последнего отрицательного элемента из {0} составляет {1} ", negCount, intArray[i]);
                            break;

                        }
                    }

                }
                if (negCount == 0)
                    Console.WriteLine("Отрицательных элементов нет");

            }




        }
        static void ChangeArrayAfterMax()
        {
            Console.WriteLine("Введите размер массива");
            int razmer = Int32.Parse(Console.ReadLine());
            int[] intArray = new int[razmer];
            int max = Int32.MinValue;
            int middleArrayValue = 0;
            int summa = 0;

            for (int i = 0; i < intArray.Length; i++)
            {

                Console.Write("[{0}]: ", i);
                intArray[i] = Int32.Parse(Console.ReadLine());
                if (intArray[i] > max)
                {
                    max = intArray[i];
                }
               

            }
          
            foreach (int i in intArray)
            
            {
                summa = summa + i;
                middleArrayValue = summa / intArray.Length;
            }
            Console.WriteLine("максимальное значение в массиве " + max);
            Console.WriteLine("сумма элементов массива  " + summa);
            Console.WriteLine("среднее значение элемента массива " + middleArrayValue);

            for (int i = Array.IndexOf(intArray,max)+1;i<intArray.Length;i++)
            {
                intArray[i] = middleArrayValue;

            }

            //for (int i = 0; i < intArray.Length; i++)
            //{

            //    Console.WriteLine("[{0}]:  {1} ", i,intArray[i]);



            //}
            PrintArray(intArray);




        }
        static void PrintArray(int[] array)
        {
            for (int i = 0; i < array.Length; i++)
            {

                Console.WriteLine("[{0}]:  {1} ", i, array[i]);

            }


        }
    }
}




        
  